package com.magicborrow.utils;

import android.os.AsyncTask;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


public class ImageUploadAsyncTask extends AsyncTask<Integer, Integer, String> {

    private HashMap<String,String> params;
    private Map<String, File> files;
    private String url;
    private HttpRequest.HttpRequestListener listener;
    public static final double MAX_LEANTH = 400 * 1024;
    private String fileKey;

    public ImageUploadAsyncTask(HashMap<String,String> params,
                                Map<String, File> files, String fileKey,String url, HttpRequest.HttpRequestListener listener) {
        this.params = params;
        this.files = files;
        this.url = url;
        this.listener = listener;
        this.fileKey =fileKey;
    }



    /**
     * 这里的Integer参数对应AsyncTask中的第一个参数 这里的String返回值对应AsyncTask的第三个参数
     * 该方法并不运行在UI线程当中，主要用于异步操作，所有在该方法中不能对UI当中的空间进行设置和修改
     * 但是可以调用publishProgress方法触发onProgressUpdate对UI进行操作
     */
    @Override
    protected String doInBackground(Integer... param) {
        int i = 0;

        try {
//        /*    Set<Map.Entry<String, File>> set = files.entrySet();
//            for (Iterator<Map.Entry<String, File>> it = set.iterator(); it.hasNext(); ) {
//                Map.Entry<String, File> entry = (Map.Entry<String, File>) it.next();
//                entry.setValue(compressImage("loadupImage" + (i++), entry.getValue()));
//            }*/
            return HttpRequest.post(url, params, files,fileKey);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println(e.toString());
            return "fail";
        }
    }

    /**
     * 这里的String参数对应AsyncTask中的第三个参数（也就是接收doInBackground的返回值）
     * 在doInBackground方法执行结束之后在运行，并且运行在UI线程当中 可以对UI空间进行设置 无效的用户
     */
    @Override
    protected void onPostExecute(String result) {
        if ("fail".equals(result)) {
            listener.httpError();
        } else {
            listener.httpSuccess(result);
        }
    }

    // 该方法运行在UI线程当中,并且运行在UI线程当中 可以对UI空间进行设置
    @Override
    protected void onPreExecute() {
    }

    /**
     * 这里的Intege参数对应AsyncTask中的第二个参数
     * 在doInBackground方法当中，，每次调用publishProgress方法都会触发onProgressUpdate执行
     * onProgressUpdate是在UI线程中执行，所有可以对UI空间进行操作
     */
    @Override
    protected void onProgressUpdate(Integer... values) {
    }


}
